Scale information for drawing annotations

ABSTRACT

The present disclosure includes, among other things, systems, methods and program products for identifying a drawing scale for a graphical view of a drawing, the drawing scale specifying a ratio of two units; selecting one or more annotations associated with the view that support the drawing scale, each of the selected annotations associated with context for the drawing scale, the context specifying one or more of: the annotation&#39;s position in the view, the annotation&#39;s style in the view, or the annotation&#39;s rotation in the view; adding a graphical representation of each of the selected annotations to the view according to the drawing scale and each annotation&#39;s respective context; and removing any one or more of the annotations from the view that does not support the drawing scale.

BACKGROUND

Annotations are used to add helpful information to two dimensional (2D)and three dimensional (3D) computer aided design drawings. Examples ofannotations include text labels and hatch patterns. A view is arectangle or other planar shape that a drawing, or portion thereof, isprojected onto and in turn viewed by a user on a display device. A viewis of a model space or a paper space (e.g., a preview of a printeddrawing plan), and has a scale associated with it that specifies a ratioof units, such as drawing units to paper units. Objects in a drawing aregiven sizes in terms of units (e.g., inches, feet, centimeters) andappear in the correct proportions depending on a view's scale and space.For example, if a view scale is 1″ drawing units to ¼″ paper units, adrawing will be rendered as though every inch was a quarter inch in apaper space view. Typically, an annotation is created for a specificview scale. In order for the annotation to appear in the correctproportion at other scales, a version of the annotation needs to becreated for each view scale that is desired. This is cumbersome sincecreating more than one version of an annotation is time consuming, proneto errors, and requires that a change to an annotation be propagated toeach version.

SUMMARY

In general, one or more aspects of the subject matter described in thisspecification can be embodied in one or more methods that includeidentifying a drawing scale for a graphical view of a drawing, the scalespecifying a ratio of two units. One or more annotations associated withthe view that support the scale are selected, each of the selectedannotations associated with context for the scale, the contextspecifying one or more of: the annotation's position in the view, theannotation's size in the view, the annotation's style in the view, orthe annotation's rotation in the view. A graphical representation ofeach of the selected annotations is added to the view according to thescale and each annotation's respective context. Any annotation that doesnot support the scale is removed from the view. Other implementations ofthis aspect include corresponding systems, apparatus, and computerprogram products.

These and other implementations can optionally include one or more ofthe following features. The two units can be paper units and drawingunits. The annotation can be one or more of: text, a hatch pattern, adimension, a leader, a block or a block attribute.

In general, one or more aspects of the subject matter described in thisspecification can be embodied in one or more methods that includeidentifying an annotation in a graphical view of a drawing, theannotation having a graphical representation in the drawing and isassociated with a plurality of drawing scales, each of the plurality ofdrawing scales associated with a context where the context and theassociated scale determine the graphical representation of an associatedannotation in the drawing when the scale matches a view scale. For eachscale associated with the annotation: 1) storing in a the file thatstores the drawing the scale including storing first units and secondunits that determine the scale; and 2) storing in the file theassociated context including storing one or more of: the annotation'sposition in the view, the annotation's size in the view, theannotation's style in the view, or the annotation's rotation in theview. Other implementations of this aspect include correspondingsystems, apparatus, and computer program products.

These and other implementations can optionally include one or more ofthe following features. The association between the annotation and thescale can be stored in the file. The association between the scale andthe associated context can be stored in the file. The two units can bepaper units and drawing units. The annotation can be one or more of:text, a hatch pattern, a dimension, a leader, a block or a blockattribute.

In general, one or more aspects of the subject matter described in thisspecification can be embodied in one or more methods that includeidentifying an annotation in a graphical view of a drawing, theannotation having a graphical representation in the drawing andassociated with a plurality of drawing scales, each of the plurality ofdrawing scales associated with a context where a context and anassociated scale determine the graphical representation of an associatedannotation in the drawing when the scale matches a view scale. For eachscale associated with the annotation: 1) retrieving from a the file thatstores the drawing the scale including storing first units and secondunits that determine the scale; and; 2) retrieving from the file theassociated context including storing one or more of: the annotation'sposition in the view, the annotation's size in the view, theannotation's style in the view, or the annotation's rotation in theview. Other implementations of this aspect include correspondingsystems, apparatus, and computer program products.

These and other implementations can optionally include one or more ofthe following features. The association between the annotation and thescale can be retried from the file. The association between the scaleand the associated context can be retrieved from the file. The two unitscan be paper units and drawing units. The annotation can be one or moreof: text, a hatch pattern, a dimension, a leader, a block or a blockattribute.

In general, one or more aspects of the subject matter described in thisspecification can be embodied in a memory for storing data for access byan application program being executed on a data processing system, thememory comprising a data structure stored in said memory, said datastructure including: 1) an annotation for a graphical view of a drawing,the annotation having a graphical representation in the drawing; 2) aplurality of drawing scales associated with the annotation, each drawingscale having first and second units that determine the scale; and 3) acontext associated with each drawing scale, where a context and anassociated scale determine the graphical representation of an associatedannotation in the drawing.

These and other implementations can optionally include one or more ofthe following features. The two units can be paper units and drawingunits. The annotation can be one or more of: text, a hatch pattern, adimension, a leader, a block or a block attribute.

Particular implementations of the subject matter described in thisspecification can be implemented to realize one or more of the followingadvantages. Drawing annotations can be rendered in a constant size,regardless of the scale. Annotations are automatically added to orremoved from views depending on the current scale of the view and thescale(s) supported by the annotations. Scales are stored in a drawing'sfile instead of elsewhere on a user's system. A single drawingannotation can appear in different positions for different scales.

The details of one or more implementations of the invention are setforth in the accompanying drawings and the description below. Otherfeatures, aspects, and advantages of the invention will become apparentfrom the description, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A and 1B illustrate example annotations shown in views havingdifferent scales.

FIG. 2 is a flowchart of a method for updating a graphical view of adrawing.

FIG. 3A is an illustration of a data store that includes scaleinformation.

FIG. 3B is an illustration of an example annotation shown in multipleviews.

FIG. 4 illustrates an example class hierarchy for storing context dataassociated with scales.

FIG. 5 is a flowchart of a method for storing a drawing's annotationscale information.

FIG. 6 is a flowchart of a method for retrieving a drawing's annotationscale information.

FIG. 7 is a schematic diagram of a generic computer system.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

FIGS. 1A and 1B illustrate example annotations shown in views havingdifferent scales. An annotation (also known as an annotative entity) isan explanatory item on a drawing, which can be used to label or describeother, non-annotative drawing objects. Annotations can be of severaltypes. For example, annotations can be text, hatch patterns (e.g.,shading consisting of multiple crossing lines), dimensions (e.g., ameasure of spatial extent, such as a width or height), leaders (e.g.,explanatory text with an arrow pointing to the object being described),blocks (e.g., an object, such as a door, which is defined once andreferenced multiple times in a drawing) and block attributes (e.g., anattribute of a block, such as a door number, which distinguishes onedoor block reference from another).

A view 100 in FIG. 1A has a scale of “1:1” (the “1:1” can be read as“one to one”). A scale specifies a ratio between two units. For example,a scale of “1:1” can specify a ratio of one paper unit to one drawingunit. A paper unit can be used to specify the size of a drawing item(such as an annotation) as it appears on paper. A drawing unit can beused to specify the size of an item in model space (e.g., a physicalsize). A view 102 in FIG. 1B has a scale of “1:2”, which specifies aratio of one paper unit to two drawing units.

The user may desire to control the appearance of annotations. Forexample, a user may wish to control the size of an annotation, such asshowing an annotative text item in a particular size in every view(i.e., keeping the size of a text item constant, even if other items onthe drawing appear smaller or larger in views with different scales). Asanother example, the user may desire the position, rotation or style ofan annotation to be different when viewed in different scales (e.g., anannotative text item may fit better at different positions or rotationsin views having different scales). As a third example, the user maydesire that some annotations appear only in views having particularscales (e.g., showing a certain subset of dimensions in a view with a“1:4” scale and showing a different subset of dimensions in a viewhaving a “1:8” scale).

An annotation can be configured to support particular scales, and anannotation can have associated context settings which control theappearance of the annotation in a view having a particular scale. Forexample, annotative text items 104 and 106 in view 100 are eachconfigured to support a “1:1” scale. Since the view 100 has a 1:1 scale,the annotative text items 104 and 106 are visible in the view 100. Theannotative text item 106 also supports a scale of “1:2”, so theannotative text item 106 also appears in the view 102, which has a scaleof “1:2”. Since the annotative text item 104 does not support the scaleof “1:2”, it does not appear in the view 102.

If a scale of a view is changed, annotations supporting the new scaleappear in the view, and annotations supporting the old, but not the newscale, are automatically hidden from the view. Additionally, forannotations that support both the old and the new scales, but havedifferent context settings for the old and new scales (e.g., differentsize, style, rotation or position), the annotations can be displayedusing the context settings associated with the new scale.

The annotative text item 106 is configured to appear in the same size inboth the “1:1” and “1:2” scales. Non-annotative items appear indifferent sizes in views having different scales. For example, the view100 includes a rectangle 108 and a non-annotative text item 110. Acorresponding rectangle 112 and non-annotative text item 114 appear inthe view 102. The rectangle 112 and text item 114 appear smaller thanthe corresponding rectangle 108 and text item 110 due to the scaledifference between the two views (a size difference can also occur if auser performs a zoom command in one of the views).

FIG. 2 is a flowchart of an example method 200 for updating a graphicalview of a drawing. A drawing scale for a graphical view of a drawing isdetermined, where the scale specifies a ratio of two units (step 202).For example, the scale of 1 paper unit to 2 drawing units for the view102, or the scale of 1 paper unit to 1 drawing unit for the view 100 canbe determined. The scale can be determined, for example, when the userchanges a scale in a view to a new scale value.

One or more annotations associated with the view that support the scaleare then selected (step 204). For example, if scale of “1:1” isdetermined for the view 100, the annotations 104 and 106, which bothsupport a “1:1” scale, can be selected.

Next, a graphical representation of each of the selected annotations isadded to the view according to the scale and each annotation'srespective context (step 206). For example, the annotations 104 and 106can be rendered in the view 100, according to size, style, position androtation context associated with each annotation and with the “1:1”scale.

Next, any annotations that do not support the scale are removed from theview (step 208). For example, if the annotative text item 104 supporteda “1:2” scale but not a “1:1” scale, it could be removed from the view100.

FIG. 3A is an illustration of a data store 300 that includes scaleinformation. The data store 300 stores a drawing model, which includesinformation associated with non-annotative entities 302 and 304 and anannotative entity (e.g., text) 306. Information stored for theannotative entity 306 includes a list of supported scales 308. The list308 is a list of view scales (e.g., “1:1”, “1:2”, “2:1”) that theannotative entity 306 supports. Information stored for the annotativeentity 306 also includes, for each supported scale, context associatedwith the scale. For example, for the scale “1:1”, associated contextsettings 310 include size, position and rotation values (i.e., whenviewed in the scale “1:1”, the annotative entity 306 can be displayedaccording to the context settings 310). In some implementations, thesupported scales 308 and associated context settings 310 can be storedusing key-value data structures.

FIG. 3B is an illustration of an example annotation shown in multipleviews having differing scales. As described above, a list 308 ofsupported scales is stored for the annotative entity 306 in the drawingmodel 300, and for each supported scale, a set of context settings 310can be stored. A view 340 displays the non-annotative entities 302 and304, along with the annotative entity 306, using a “1:1” scale. Theannotative entity 306 is shown according to context settings 310associated with the scale used in the view 340 (i.e., associated with a“1:1” scale).

A view 350 has a scale of “2:1”, and entities 302 a, 304 a, and 306 aare shown in a larger size as compared to the corresponding entities302, 304, and 306 in the view 340. The annotative entity 306 a is shownaccording to context settings associated with the “2:1” scale. A view360 has a scale of “1:2”, and entities 302 b, 304 b, and 306 b are shownin a smaller size as compared to the corresponding entities 302, 304,and 306 in the view 340. The annotative entity 306 b is shown accordingto context settings associated with the “1:2” scale. In addition, theannotative entity 306 b is shown with a different rotation than thecorresponding annotative entity 306. As mentioned above, an annotativeentity can have context settings associated with a scale that cancontrol the appearance of the annotative entity when displayed in a viewusing that particular scale.

FIG. 4 illustrates an example class hierarchy 400 for storing contextdata associated with scales. A class represents an object type. Theclass hierarchy 400 shows multiple classes representing multipleannotation object types. A class can define context information that isstored on a per scale basis for a particular annotation type. Baseclasses ObjectContextData 402 and AnnotScaleObjectContextData 404 defineinformation that is stored for all types of annotation objects. Objectsof the ObjectContextData class 402 can store a data version and aboolean value indicating whether the context data stored is the defaultcontext data for the annotation. Objects of theAnnotScaleObjectContextData class 404 can store an identifier associatedwith a scale object that the context data is associated with.

Objects of the BlkRefObjectContextData class 406 can store contextinformation associated with block reference annotations, such as therotation, position and scale factors for the block reference.

Objects of the MLeaderObjectContextData class 408 can store contextinformation associated with “multiple leader” (MLeader) objects, such asthe number of leader lines stored, whether the MLeader has an associatedmultiple-line text item, the number of characters in the multiple-linetext item, and the content, location, direction vector, rotation,line-spacing factor, width and height of the multiple-line text item.For each column of the multiple-line text item, a column height and aboolean value indicating whether to use word break for the content canbe stored.

Objects of the MTextObjectContextData class 410 can store contextinformation associated with multiple-line annotative text objects, suchas an attachment point, a direction vector, a location point, a widthand height of the multiple-line text area, whether columns areassociated with the multiple-line text area, the number of columns, andfor each column, a column width and an auto height flag.

Objects of the LeaderObjectContextData class 412 can store contextinformation associated with leader objects, such as the number ofvertices in the leader, the vertex point location for each vertex, ahorizontal direction, a boolean value indicating whether the leader“hook line” is in the same direction as the horizontal direction for theleader, an offset between the last leader vertex and the leader's blockinsertion location, and an annotation offset for the leader.

Objects of the DimensionObjectContextData class 414 can store contextinformation associated with dimension objects. Dimension contextinformation can vary based on the type of dimension object. For eachdimension object, a location, rotation and arrow orientation can bestored. For angular dimension objects, an arc point of the angulardimension can be stored. For aligned dimension objects, a dimension linepoint specifying the location of the dimension line can be stored. Forradial dimension objects, a chord point specifying the point where thedimension line intersects the curve being dimensioned can be stored. Fordiametric dimension objects, a chord point specifying where thedimension line intersects the curve being dimensioned (and extendsoutside the curve, if the text is outside the curve) can be stored. Alsofor diametric dimension objects, a far chord point can be stored. A farchord point is the point on the curve being dimensioned that isdiametrically opposite the point where the dimension line extendsoutside the curve, if the text is outside the curve. For ordinatedimension objects, an origin point defining a reference point fordistance calculations can be stored, along with an endpoint specifyingthe dimension leader's endpoint.

Objects of the TextObjectContextData class 416 can store contextinformation associated with annotative text objects, such as ahorizontal mode, a rotation value, a position value and an alignmentpoint.

Objects of the HatchScaleContextData class 418 can store contextinformation associated with hatch annotative objects, such as the numberof hatch pattern lines, and for each line in the hatch pattern, a lineangle, a base position value of the line, a horizontal offset directionof the line, a vertical offset direction of the line, and the number ofdashes in the line. Also, a dash length, a hatch pattern base angle(used for paper orientation) and the number of boundary loops in thehatch can be stored. For each boundary loop in the hatch, a valueindicating the type of the boundary loop can be stored, as well as aboolean flag indicating whether the boundary loop has bulges, a booleanvalue indicating whether the boundary loop is closed, the number ofpoints in the boundary loop, and number of edges in the boundary loop.

For each edge of the hatch object, an edge type can be stored indicatingwhether the edge is a line, circular arc, elliptical arc, or spline. Forline edges, starting and ending points of the boundary loop edge can bestored. For circular arc edges, a center point, radius, start angle, endangle and boolean value indicating whether the circular arc is measuredclockwise can be stored. For elliptical arc edges, a center point, majoraxis, radius ratio specifying the ratio of the minor radius divided bymajor radius, start angle, end angle and a boolean value indicatingwhether the elliptical arc is measured clockwise can be stored. Forspline edges, the degree of the spline boundary loop edge, a booleanvalue indicating whether the spline edge is rational, a boolean valueindicating whether the spline edge is periodic, and the number ofcontrol points in the spline edge can be stored.

FIG. 5 is a flowchart of an example method 500 for storing a drawing'sannotation scale information. First, an annotation in a graphical viewof a drawing is identified (step 502). For example, the annotativeentity 306 in the view 340 can be identified.

A scale associated with the annotation is then identified (step 504).For example, the “1:1” scale supported by the annotative entity 306 andused in the view 340 can be identified.

An association between the annotation and the scale is then stored in afile that stores the drawing (step 506). For example, an associationbetween the annotative entity 306 and the scale “1:1” can be stored in afile that stores the drawing model 300. The scale value of “1:1” can beincluded in the supported scales list 310, and the supported scales list310 can be associated with the annotative entity 306, for example, byusing a key-value data structure.

Next, the scale, including first units and second units that determinethe scale, is stored in the file (step 508). For example, the supportedscales list 308, which includes a supported scale value of “1:1” (whichspecifies a ratio of 1 paper units to 1 drawing units) can be stored ina file which stores the drawing model 300.

An association between the scale and the associated context is thenstored in the file (step 510). For example, an entry in the supportedscales list 308 corresponding to a “1:1” scale value can be associatedwith context setting 310, for example, by using a key-value datastructure, and the key-value data structure can be stored in a file thatstores the drawing model 300. The associated context is then stored inthe file, including storing one or more of: the annotation's position inthe view, the annotation's size in the view, the annotation's style inthe view, and the annotation's rotation in the view (step 512). Forexample, the context settings 310, which include values for theannotative entity 306's size, position and rotation, can be stored in afile that stores the drawing model 300.

It is then determined whether more scales are associated with theannotation (step 514). If there are no more scales associated with theannotation, the method ends. If there are more scales associated withthe annotation, an association between the annotation and the scale isstored in the file (step 506), and steps 508 to 514 are performed. Forexample, it can be determined that, in addition to a “1:1” scale, theannotative entity 306 is associated with a second scale of “1:2”, asindicated by the contents of the supported scales list 308.

FIG. 6 is a flowchart of an example method 600 for retrieving adrawing's annotation scale information. First, an annotation in agraphical view of a drawing is identified (step 602). For example, theannotative entity 306 in the view 340 can be identified. A scale is thenassociated with the annotation is identified (step 604). For example,the “1:1” scale supported by the annotative entity 306 and used in theview 340 can be identified.

An association between the annotation and the scale is then retrievedfrom a file that stores the drawing (step 606). For example, anassociation between the supported scales list 308 and the annotativeentity 306 can be retrieved, for example, from a key-value datastructure that is stored in a file that stores the drawing model 300.

Next, the scale, including first units and second units that determinethe scale, is retrieved from the file (step 608). For example, thesupported scales list 308 can be retrieved from a file that stores thedrawing model 300, and the scale value of “1:1” can be read from thesupported scales list 308 and converted to a ratio of 1 paper unit to 1drawing unit.

An association between the scale and the associated context is thenretrieved from the file (step 610). For example, an association betweena scale value of “1:1” and the context settings 310 can be retrievedfrom a file that stores the drawing model 300, for example, byretrieving a key-value data structure.

The associated context is then retrieved from the file, includingretrieving one or more of: the annotation's position in the view, theannotation's size in the view, the annotation's style in the view, andthe annotation's rotation in the view (step 612). For example, thecontext settings 310 can be retrieved from a file that stores thedrawing model 300, and position, size and rotation values can beretrieved from the context settings 310.

Next, it is determined whether more scales are associated with theannotation (step 614). If there are no more scales associated with theannotation, the method ends. If there are more scales associated withthe annotation, an association between the annotation and the scale isretrieved from the file (step 606), and steps 608 to 614 are performed.For example, it can be determined that there are additional scales(e.g., “1:2”) in the retrieved supported scales list 308.

FIG. 7 is a schematic diagram of a generic computer system 700. Thesystem 700 can be used for practicing operations described inassociation with the techniques 200, 500 and 600. The system 700 caninclude a processor 710, a memory 720, a storage device 730, andinput/output devices 740. Each of the components 710, 720, 730, and 740are interconnected using a system bus 750. The processor 710 is capableof processing instructions for execution within the system 700. In oneimplementation, the processor 710 is a single-threaded processor. Inanother implementation, the processor 710 is a multi-threaded processor.The processor 710 is capable of processing instructions stored in thememory 720 or on the storage device 730 to display graphical informationfor a user interface on the input/output device 740.

The memory 720 is a computer readable medium such as volatile or nonvolatile that stores information within the system 700. The memory 720could store data structures representing annotations, annotation scales,and associated context, for example. The storage device 730 is capableof providing persistent storage for the system 700. The storage device730 may be a floppy disk device, a hard disk device, an optical diskdevice, or a tape device, or other suitable persistent storage means.The input/output device 740 provides input/output operations for thesystem 700. In one implementation, the input/output device 740 includesa keyboard and/or pointing device. In another implementation, theinput/output device 740 includes a display unit for displaying graphicaluser interfaces.

The input/output device 740 can provide input/output operations for aCAD system. The CAD system can be, for example, AutoCad®, AutodeskArchitectural Desktop® or Autodesk Building Systems®, available fromAutodesk, Inc., of San Rafael, Calif., or another CAD application orother software application. The CAD system can include computer softwarecomponents that annotation scales. Such software components can bepersisted in storage device 730, memory 720 or can be obtained over anetwork connection, to name a few examples.

A CAD drawing does not necessarily correspond to a file. A drawing maybe stored in a portion of a file that holds other content, in a singlefile dedicated to the drawing in question, or in multiple coordinatedfiles. Moreover, a drawing can be stored in a memory without havingfirst been stored in a file.

Implementations of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, or in computer software, firmware, or hardware, including thestructures disclosed in this specification and their structuralequivalents, or in combinations of one or more of them. Implementationsof the subject matter described in this specification can be implementedas one or more computer program products, i.e., one or more modules ofcomputer program instructions encoded on a computer-readable medium forexecution by, or to control the operation of, data processing apparatus.The computer-readable medium can be a machine-readable storage device, amachine-readable storage substrate, a memory device, a composition ofmatter effecting a machine-readable propagated signal, or a combinationof one or more of them. The term “data processing apparatus” encompassesall apparatus, devices, and machines for processing data, including byway of example a programmable processor, a computer, or multipleprocessors or computers. The apparatus can include, in addition tohardware, code that creates an execution environment for the computerprogram in question, e.g., code that constitutes processor firmware, aprotocol stack, a database management system, an operating system, or acombination of one or more of them. A propagated signal is anartificially generated signal, e.g., a machine-generated electrical,optical, or electromagnetic signal, that is generated to encodeinformation for transmission to suitable receiver apparatus.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, and it can bedeployed in any form, including as a stand-alone program or as a module,component, subroutine, or other unit suitable for use in a computingenvironment. A computer program does not necessarily correspond to afile in a file system. A program can be stored in a portion of a filethat holds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub-programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto-optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device, e.g., a mobile telephone, a personal digital assistant(PDA), a mobile audio player, a Global Positioning System (GPS)receiver, to name just a few. Computer-readable media suitable forstoring computer program instructions and data include all forms ofnon-volatile memory, media and memory devices, including by way ofexample semiconductor memory devices, e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Theprocessor and the memory can be supplemented by, or incorporated in,special purpose logic circuitry.

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input.

Implementations of the subject matter described in this specificationcan be implemented in a computing system that includes a back-endcomponent, e.g., as a data server, or that includes a middlewarecomponent, e.g., an application server, or that includes a front-endcomponent, e.g., a client computer having a graphical user interface ora Web browser through which a user can interact with an implementationof the subject matter described is this specification, or anycombination of one or more such back-end, middleware, or front-endcomponents. The components of the system can be interconnected by anyform or medium of digital data communication, e.g., a communicationnetwork. Examples of communication networks include a local area network(“LAN”) and a wide area network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specifics, these should not beconstrued as limitations on the scope of the invention or of what may beclaimed, but rather as descriptions of features specific to particularimplementations of the invention. Certain features that are described inthis specification in the context of separate implementations can alsobe implemented in combination in a single implementation. Conversely,various features that are described in the context of a singleimplementation can also be implemented in multiple implementationsseparately or in any suitable subcombination. Moreover, althoughfeatures may be described above as acting in certain combinations andeven initially claimed as such, one or more features from a claimedcombination can in some cases be excised from the combination, and theclaimed combination may be directed to a subcombination or variation ofa subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular implementations of the invention have been described.Other implementations are within the scope of the following claims. Forexample, the actions recited in the claims can be performed in adifferent order and still achieve desirable results.

What is claimed is:
 1. A computer-implemented method, the methodcomprising: identifying a drawing scale for a graphical view of adrawing from a file that stores the drawing, the drawing scalespecifying a ratio of two units; selecting one or more annotationsassociated with the view that supports the drawing scale; retrievingfrom the file for each of the selected annotations, associated contextfor the drawing scale, the context specifying one or more of: theannotation's position in the view, the annotation's style in the view,or the annotation's rotation in the view; adding a graphicalrepresentation of each of the selected annotations to the view accordingto the drawing scale and each annotation's respective context; andremoving any one or more of the annotations from the view that does notsupport the drawing scale.
 2. The method of claim 1 where the two unitsare paper units and drawing units.
 3. The method of claim 1 where theannotation is one or more of: text, a hatch pattern, a dimension, aleader, a block or a block attribute.
 4. A system comprising: a displayfor presenting a view of a drawing to a user; and one or more computingdevices operable to interact with the display and to perform operationscomprising: identifying a drawing scale for a graphical view of adrawing from a file that stores the drawing, the drawing scalespecifying a ratio of two units; selecting one or more annotationsassociated with the view that supports the drawing scale; retrievingfrom the file for each of the selected annotations, associated contextfor the drawing scale, the context specifying one or more of: theannotation's position in the view, the annotation's style in the view,or the annotation's rotation in the view; adding a graphicalrepresentation of each of the selected annotations to the view accordingto the drawing scale and each annotation's respective context; andremoving one or more of the annotations from the view that does notsupport the drawing scale.
 5. A computer program product, encoded on anon-transitory medium storage device, operable to cause data processingapparatus to perform operations comprising: identifying a drawing scalefor a graphical view of a drawing from a file that stores the drawing,the drawing scale specifying a ratio of two units; selecting one or moreannotations associated with the view that support the drawing scale;retrieving from the file for each of the selected annotations,associated context for the drawing scale, the context specifying one ormore of: the annotation's position in the view, the annotation's stylein the view, or the annotation's rotation in the view; adding agraphical representation of each of the selected annotations to the viewaccording to the drawing scale and each annotation's respective context;and removing one or more of the annotations from the view that does notsupport the drawing scale.